# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import os,time,xlwt,xlrd
#制定数据的输出

class DoubanmoviePipeline(object):
    #构造方法
    def __init__(self):
        self.r = 0
        self.data_list = []
        self.excelPath = os.path.join(os.getcwd(), 'output')
        # 判断文件夹是否存在
        if not os.path.exists(self.excelPath):
            os.mkdir('output')
            pass
        # 创建文件
        self.current_time = time.strftime('%Y-%m-%d-%H:%M',time.localtime())

        # 定义行数据  表头
        self.headers = ['排名', '名称','评分','描述','导演','主演','上映时间','国家','类型','海报']

    def process_item(self, item, spider):
        self.data_list.append([])   #在大列表里面添加列表 相当于建立二维列表
        #以下排列顺序必须按照self.headers[]中的内容进行排列 否则会出现跟表格头对应不上的问题
        self.data_list[self.r].append(item['Mov_Rank'][0]) #将rank数据添加到大列表中第r个小列表的第一个  排名
        self.data_list[self.r].append(item['Mov_Name'][0]) #将rank数据添加到大列表中第r个小列表的第二个  名称
        self.data_list[self.r].append(item['Mov_grade'][0])    #评分
        self.data_list[self.r].append(item['Mov_discribe'][0])   #描述
        st = item['Mov_abstract'][0].lstrip().split('主')
        self.data_list[self.r].append(st[0].lstrip('导演:'))   #导演
        self.data_list[self.r].append(st[1].lstrip('演:'))     #主演
        self.data_list[self.r].append(item['Mov_abstract'][1].lstrip().split('/')[0])     #上映时间
        self.data_list[self.r].append(item['Mov_abstract'][1].lstrip().split('/')[1])     #国家
        self.data_list[self.r].append(item['Mov_abstract'][1].lstrip().split('/')[2])    #类型
        self.data_list[self.r].append(item['Mov_pic'][0])  # 海报
        self.r = self.r + 1
        #print(self.data_list)

        self.filename = self.excelPath + os.sep + 'moviedata_top_' + self.current_time + '.xls'
        # 设置编码格式
        self.wokebook = xlwt.Workbook(encoding='utf-8')
        # 创建单页
        self.shet = self.wokebook.add_sheet('测试表')
        for rowIndex in range(len(self.headers)):
            self.shet.write(0, rowIndex, self.headers[rowIndex])  #写入表头
            for collindex in range(len(self.data_list)):
                self.shet.write(collindex+1, rowIndex, self.data_list[collindex][rowIndex])



        self.wokebook.save(self.filename)





        return item
